The present invention relates generally to data communications, and particularly to steering frames of data within a network device such as a router.
The fastest-growing market for computer hardware is the Small Office/Home Office (SOHO) market. One of the most important computer hardware components for the SOHO market is the router, which enables multiple computers or other network-enabled devices to share a single broadband Internet connection. A router transfers data between two or more different networks. A network is group of devices that are interconnected to exchange data where each of the devices has an internet protocol (IP) address that is unique within the network. However, IP addresses can be reused in separate networks. That is, a device in one network can have the same IP address as another device in a different network. A router translates IP addresses to ensure that data sent from one network to another reaches the intended device. Conventional routers generally have a dedicated wide-area network (WAN) port that is connected to the Internet through an Internet service provider (ISP), and several local-area network (LAN) ports that are each connected to one of the computers or network-enabled devices in the office. One disadvantage of such conventional routers lies in the dedicated WAN port. Because conventional routers have only one WAN port, they are incapable of supporting multiple WANs, as is desirable for network load-balancing using multiple ISP connections or for redundant backup support. And because the WAN port is physically a dedicated port, it must be connected to the correct port (i.e., the WAN port), making setup more difficult.
FIG. 1 shows a conventional router 100 connected to a WAN 102 and a LAN 104 comprising a plurality of network-enabled devices (NED) 106A through 106N. Router 100 includes a dedicated WAN 108 port, connected to WAN 102, that communicates with a central processing unit (CPU) 110 through a WAN network interface controller 112. Router 100 also comprises a switch 114 comprising a plurality of LAN ports 116A through 116N, each connected to one of NEDs 106A through 106N, and a CPU port 118 that communicates with CPU 110 through a LAN network interface controller 120. WAN network interface controller 112 comprises a WAN media access controller (MAC) 122. LAN network interface controller 120 comprises a LAN MAC 124.
One disadvantage of the architecture of router 100 is that a separate MAC is required for each network, making the router more expensive to manufacture. And adding other networks requires more MACs. For example, adding a wireless LAN port would require the addition of another separate MAC to pass data between the wireless LAN and the CPU. Further, many customers are requesting routers with a “demilitarized zone” (DMZ) port to support servers that are available to both the WAN and LAN while keeping the WAN and LAN isolated. In conventional routers, the addition of a DMZ port would require the addition of a separate MAC to support the DMZ port because the DMZ cannot be connected to switch 114. Such a connection would create a security breach, allowing anyone that has access to the DMZ to also have access to the LAN 104.
Another popular router feature is quality of service (QOS), where each frame of data is assigned one of several prioritized classes of service. When the router becomes congested, it handles the frames according their classes of service. In conventional routers, the CPU makes all of the QOS decisions, thereby wasting CPU cycles that could better be used for faster and/or better routing.
Another popular feature in network devices is the Spanning Tree Algorithm (STA), which prevents the formation of bridge loops by exchanging multicast Bridge Protocol Data Units (BPDU) between switch CPUs, and is described in IEEE standard 802.1D, which is incorporated by reference herein in its entirety. When using STA it is preferable to direct BPDUs from the CPU to particular ports. For example, when a CPU replies to a BPDU, it is preferable to direct the reply to the port on which the BPDU was received. As another example, it is preferable to ensure that a switch that receives a BPDU from its CPU does not send that BPDU back to that CPU.